home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / os2 / cenvi2.arj / CENVILIB.DOC < prev    next >
Text File  |  1993-12-21  |  36KB  |  707 lines

  1.                     CEnvi Shareware Manual, Chapter 4:
  2.                              Function Library
  3.  
  4.  
  5.                      CEnvi unregistered version 1.008
  6.                              21 December 1993
  7.  
  8.                        CEnvi Shareware User's Manual
  9.  
  10.           Copyright 1993, Nombas, All Rights Reserved.
  11.           Published by Nombas, P.O. Box 875, Medford, MA 02155 USA
  12.           (617)391-6595
  13.  
  14.           Thank you for trying this shareware version of CEnvi from Nombas,
  15.           a member of the Association of Shareware Professionals (ASP).
  16.  
  17. 4.  CEnvi Internal Function Library
  18.  
  19.           CEnvi includes a large library of internal functions that are
  20.           available for use in your CEnvi code.  (External function
  21.           libraries, and a developer toolkit for creating external
  22.           libraries, will be available in an upcoming incremental release.)
  23.  
  24. 4.1.  Standard Library
  25.  
  26.  
  27.           The C language has long had a standard set of libraries that
  28.           contain routines included with nearly all C implementations.
  29.           Most of this standard library, as defined by ANSI and ISO, is
  30.           included internally to CEnvi, and so all of these routines are
  31.           available to any Cmm program executed by CEnvi.
  32.  
  33.           Minimal modifications have been added to the standard library to
  34.           support the differences between the Cmm and the C languages.  In
  35.           most cases, these modifications involve the redefinition of
  36.           variable pointers to become variables-passed-by-reference.
  37.           Usually, though, the Cmm call to one of these functions looks
  38.           identical to the C call.  The experienced C programmer should
  39.           feel right at home.
  40.  
  41.           A few functions have been dropped in this version, mostly those
  42.           dealing with locales.  A few functions have also been added
  43.           beyond those in the ANSI and ISO standards when those functions
  44.           seem to be common across most existing implementations of C
  45.           libraries.
  46.  
  47.             CLOCKS_PER_SEC: defined for system clock rate
  48.             FALSE: #define'd 0
  49.             TRUE: #define'd 1
  50.             NULL: #define'd 0
  51.             EXIT_FAILURE: failure program exit value
  52.             EXIT_SUCCESS: good program exit value
  53.             RAND_MAX: maximum number returned by rand()
  54.  
  55.             abort: Terminate program; probably due to error.
  56.               void abort()
  57.             abs: Return the absolute value of an integer.
  58.               int abs(int x)
  59.             acos: Calculate the arc cosine.
  60.               float acos(float x)
  61.             asctime: Convert data and time to an ASCII string.
  62.               string asctime(struct tm)
  63.             asin: Calculate the arc sine.
  64.               float asin(float x)
  65.             assert: Test a condition and abort if it is FALSE.
  66.               void assert(bool test)
  67.             atan: Calculate the arc tangent.
  68.               float atan(float x)
  69.             atan2: Calculate the arc tangent of a fraction.
  70.               float atan2(float y,float x)
  71.             atexit: Register function to be called at program exit.
  72.               void atexit(string functionName)
  73.             atof: Convert ascii string to a floating-point number
  74.               float atof(string str)
  75.             atoi: Convert ascii string to an integer.
  76.               int atoi(string str)
  77.             atol: Convert ascii string to an integer.
  78.               int atol(string str)
  79.             bsearch: Binary search for member of a sorted array.
  80.               int bsearch(var key,var[] SortedArray,[int
  81.               ElementCount,]string CompareFunction)
  82.             ceil: Ceiling; round up.
  83.               float ceil(float x)
  84.             clearerr: Clear end-of-file and error status for a file.
  85.               void clearerr(FILE stream)
  86.             clock: Get processor time.
  87.               int clock()
  88.             cos: Calculate the cosine.
  89.               float cos(float x)
  90.             cosh: Calculate the hyperbolic cosine.
  91.               float cosh(float x)
  92.             ctime: Convert date-time to an ascii string.
  93.               string ctime(int time)
  94.             difftime: Compute difference between two times.
  95.               float difftime(int time1,int time0)
  96.             div: Integer division, returning quotient and remainder.
  97.               struct div(int numerator,int denominator)
  98.             errno: Value of error condition
  99.               int errno
  100.             exit: Normal program termination.
  101.               void exit(int status)
  102.             exp: Compute the exponential function.
  103.               float exp(float x)
  104.             fabs: Absolute value.
  105.               float fabs(float x)
  106.             fclose: Close an open file.
  107.               int fclose(FILE stream)
  108.             feof: Test if at end of file stream.
  109.               bool feof(FILE stream)
  110.             ferror: Test for error on a file stream.
  111.               int ferror(FILE stream)
  112.             fflush: Flush stream for open file(s).
  113.               int fflush(FILE stream)
  114.             fgetc: Get a character from file stream.
  115.               int fgetc(FILE stream)
  116.             fgetpos: Get current position of a file stream.
  117.               int fgetpos(FILE stream,Var pos)
  118.             fgets: Get a string from an input stream.
  119.               string fgets([string buf[,int buflen],]FILE stream)
  120.             floor: Round down.
  121.               float floor(float x)
  122.             fmod: Modulus; calculate remainder.
  123.               float fmod(float x,float y)
  124.             fopen: Open a file.
  125.               FILE fopen(string filename,string mode)
  126.             fprintf: Formatted output to a file stream.
  127.               int fprintf(FILE stream,string format,...)
  128.             fputc: Write a character to a file stream.
  129.               int fputc(int c,FILE stream)
  130.             fputs: Write a string to a file stream.
  131.               int fputs(string s,FILE stream)
  132.             fread: Read data from a file.
  133.               int fread(byte[] DestBuffer,bufferLen,stream)
  134.               int fread(Var DestVar,int DataTypeInFile,stream)
  135.             freopen: Assign a new file specification to a file handle.
  136.               FILE freopen(string filename,string mode,FILE OldFP)
  137.             frexp: Break into a mantissa and an exponential power of 2.
  138.               float frexp(float x,int exponent)
  139.             fscanf: Formatted input from a file stream.
  140.               int fscanf(FILE stream,string format,...)
  141.             fseek: Set the file position for an opened file stream.
  142.               int fseek(stream,offset[,mode])
  143.             fsetpos: Set position of a file stream.
  144.               int fsetpos(stream,Var pos)
  145.             ftell: Get the current value of the file position.
  146.               int ftell(FILE stream)
  147.             fwrite: Write data to a file.
  148.               int fwrite(byte[] SourceBuffer,bufferLen,stream)
  149.               int fwrite(Var SourceVar,int DataTypeInFile,stream)
  150.             getc: Get a character from file stream.
  151.               int getc(FILE stream)
  152.             getch: Get a character from the keyboard; without echo.
  153.               int getch()
  154.             getchar: Get a character from standard input (keyboard).
  155.               int getchar()
  156.             getche: Get a character from the keyboard; with echo.
  157.               int getch()
  158.             getenv: Get an environment string.
  159.               string getenv(string VariableName)
  160.             gets: Read a string from standard input (keyboard).
  161.               string gets([string buf])
  162.             gmtime: Convert data and time to Greeenwich mean time (GMT).
  163.               struct gmtime(int t)
  164.             isalnum: Test for alphanumeric character.
  165.               bool isalnum(int c)
  166.             isalpha: Test for alphabetic character.
  167.               bool isalpha(int c)
  168.             isascii: Test for ASCII coded character.
  169.               bool isascii(int c)
  170.             iscntrl: Test for any control character.
  171.               bool iscntrl(int c)
  172.             isdigit: Test for any decimal-digit character.
  173.               bool isdigit(int c)
  174.             isgraph: Test for any printing character except for space.
  175.               bool isgraph(int c)
  176.             islower: Test for lower-case alphabetic letter.
  177.               bool islower(int c)
  178.             isprint: Test for any printing character including space.
  179.               bool isprint(int c)
  180.             ispunct: Test for punctuation character.
  181.               bool ispunct(int c)
  182.             isspace: Test for white-space character.
  183.               bool isspace(int c)
  184.             isupper: Test for upper-case alphabetic character.
  185.               bool isupper(int c)
  186.             isxdigit: Test for hexadecimal-digit character.
  187.               bool isxdigit(int c)
  188.             kbhit: Check if a keyboard keystroke is available.
  189.               bool kbhit()
  190.             labs: Return the absolute value of an integer (non-negative).
  191.               int labs(int x)
  192.             ldexp: Calculate mantissa * 2 ^ exp; inverse of frexp().
  193.               float ldexp(float mantissa,int exponent)
  194.             localtime: Convert data and time to borken-down structure.
  195.               struct localtime(int t)
  196.             ldiv: Integer division, returning quotient and remainder.
  197.               struct ldiv(int numerator,int denominator)
  198.             log: Calculate the natural logarithm.
  199.               float log(float x)
  200.             log10: Calculate the base-ten logarithm.
  201.               float log10(float x)
  202.             max: Return the largest of one or more values.
  203.               var max(var v1[,var v2[,var v3[,...]]])
  204.             memchr: Search a byte array, or blob, for a character.
  205.               byte[] memchr(byte[] array,byte c[,int size])
  206.             memcmp: Compare two byte arrays.
  207.               int memcmp(byte[] array1,byte[] array2[,int len])
  208.             memcpy: Copy bytes from one array to another.
  209.               byte[] memcpy(byte[] dest,byte[] src[,int len])
  210.             memicmp: Case-insensitive compare two byte arrays.
  211.               int memicmp(byte[] array1,byte[] array2[,int len])
  212.             memmove: Copy bytes from one array to another.
  213.               byte[] memmove(byte[] dest,byte[] src[,int len])
  214.             memset: Set values in a byte array to specific character.
  215.               byte[] memset(byte[] buf,int c[,int len])
  216.             min: Return the minimum of one or more values.
  217.               var min(var v1[,var v2[,var v3[,...]]])
  218.             mktime: Convert time structure into calendar time.
  219.               int mktime(struct TimeStruct)
  220.             modf: Split a value into integer and fractional parts.
  221.               float modf(float x,float i)
  222.             perror: Prints an message describing error in errno.
  223.               void perror(string s)
  224.             pow: Calculates x to the power of y.
  225.               float pow(float x,float y)
  226.             printf: Formatted output to the standard output (screen).
  227.               int printf(FILE stream,string format,...)
  228.             putc: Write a character to a file stream.
  229.               int putc(int c,FILE stream)
  230.             putchar: Write a character to stadnard output (screen).
  231.               int putchar(int c)
  232.             putenv: Set an environment string.
  233.               int putenv(string VariableName,string Value)
  234.             puts: Write a string to the the standard output (screen).
  235.               int puts(string s)
  236.             qsort: Sort an array using specified comparison function.
  237.               int qsort(var[] array,[int ElementCount,]string CmpFunction)
  238.             rand: Generate a random number.
  239.               int rand()
  240.             remove: Delete a file.
  241.               int remove(string filename)
  242.             rename: Rename a file.
  243.               int rename(string OldFilename,string NewFilename)
  244.             rewind: Reset file position to beginning of file.
  245.               void rewind(FILE stream)
  246.             scanf: Formatted input from the standard input (keyboard).
  247.               int scanf(string format,...)
  248.             sin: Calculate the sine.
  249.               float sin(float x)
  250.             sinh: Calculate the hyperbolic sine.
  251.               float sinh(float x)
  252.             sprintf: Formatted output to a string.
  253.               int sprintf(string buffer,FILE stream,string format,...)
  254.             sqrt: Calculate the square root.
  255.               float sqrt(float x)
  256.             srand: Initialize random number generator
  257.               void srand([int seed])
  258.             sscanf: Formatted input from a string.
  259.               int sscanf(string buffer,string format,...)
  260.             strcat: Append one string onto the end of another.
  261.               string strcat(string dest,string src)
  262.             strchr: Search a string for a character.
  263.               string strchr(string s,byte c)
  264.             strcmp: Compare two strings.
  265.               int strcmp(string s1,string s2)
  266.             strcmpi: Case-insensitive compare two strings.
  267.               int strcmpi(string s1,string s2)
  268.             strcpy: Copy from one string into another.
  269.               string strcpy(string dest,string src)
  270.             strcspn: Search string for first from a set of characters.
  271.               int strcspn(string Str,string CharSet)
  272.             strerror: Get a string describing an error number.
  273.               string (int err)
  274.             strftime: Formatted write of date and/or time into a string.
  275.               int strftime(string buf,[int Size,]string Format, struct tm)
  276.             stricmp: Case-insensitive compare two strings.
  277.               int stricmp(string s1,string s2)
  278.             strlen: Length of a string.
  279.               int strlen(string s)
  280.             strlwr: Converts string to lower-case characters.
  281.               string strlwr(string s);
  282.             strncat: Append up to len bytes of one string onto another.
  283.               string strncat(string dest,string src,int MaxLen)
  284.             strncmp: Compare part of two strings.
  285.               int strncmp(string s1,string s2,int MaxLen)
  286.             strncmpi: Case-insensitive compare part of two strings.
  287.               int strncmpi(string s1,string s2,int MaxLen)
  288.             strncpy: Copy given len bytes from one string into another.
  289.               string strncpy(string dest,string src,int MaxLen)
  290.             strnicmp: Case-insensitive compare part of two strings.
  291.               int strnicmp(string s1,string s2,int MaxLen)
  292.             strpbrk: Search string for byte from another string.
  293.               string strpbrk(string Str,string CharSet)
  294.             strrchr: Find last character occurrence in a string
  295.               string strrchr(string s,byte c)
  296.             strspn: Search string for first character not in a set.
  297.               int strspn(string Str,string CharSet)
  298.             strstr: Search string for a substring.
  299.               string strstr(string Str,string SubStr)
  300.             strtod: Convert a string to a floating-point value.
  301.               float strtod(string Str[,string End])
  302.             strtok: Search a string for delimited tokens.
  303.               string strtok(string Source,string Delimiters)
  304.             strtol: Convert a string to an integer value.
  305.               int strtol(string Str)
  306.               int strtol(string Str,string End)
  307.               int strtol(string Str,string End,string Radix)
  308.             strupr: Converts string to upper-case characters.
  309.               string strupr(string s)
  310.             system: Pass a command to the command processor.
  311.               int system(string Command)
  312.               int system(string CommandFormat,var arg1,...)
  313.               int system(P_SWAP,string Command) // DOS
  314.               int system(P_SWAP,string CommandFormat,var arg1,...) // DOS
  315.             tan: Calculate the tangent.
  316.               float tan(float x)
  317.             tanh: Calculate the hyperbolic tangent.
  318.               float tanh(float x)
  319.             time: Get current time.
  320.               int time([t])
  321.             tmpfile: Create a temporary binary file.
  322.               FILE tmpfile()
  323.             tmpnam: Get a temporary file name.
  324.               string tmpname([string filename])
  325.             toascii: Translate character to ASCII (7-bit) format.
  326.               int toascii(int c)
  327.             tolower: Translate character to lower-case if it is upper-case.
  328.               int tolower(int c)
  329.             toupper: Translate character to upper-case if it is lower-case.
  330.               int toupper(int c)
  331.             ungetc: Push character back to input stream.
  332.               int ungetc(int c,FILE stream)
  333.             va_arg: Retrieve variable from variable argument list.
  334.               var va_arg(blob valist[,int offset])
  335.               var va_arg(int offset)
  336.               int va_arg()
  337.             va_end: Terminate variable argument list.
  338.               void va_end(blob valist)
  339.             va_start: Initialize variable argument list.
  340.               int va_start(blob va_list[,var InputVar])
  341.             vfprintf: Formatted output to a file stream using arg_list.
  342.               int vfprintf(FILE stream,string format,blob valist)
  343.             vfscanf: Formatted input from a file stream using arg_list.
  344.               int vfscanf(FILE stream,string format,blob valist)
  345.             vprintf: Formatted output to screen using arg_list.
  346.               int vfprintf(FILE stream,blob valist)
  347.             vscanf: Formatted input from keyboard using arg_list.
  348.               int vscanf(string format,blob valist)
  349.             vsprintf: Formatted output to a string using arg_list.
  350.               int vsprintf(string buffer,FILE stream,string format,
  351.                            blob valist)
  352.             vsscanf: Formatted input from a string.
  353.               int vsscanf(string buffer,string format,blob valist)
  354.  
  355. 4.2.  CEnvi Cross-platform Library Additions
  356.  
  357.           CEnvi with Cmm adds some additional function calls to the
  358.           standard C library.  Some of these functions are ones we wish
  359.           were in the standard library, and others are functions that are
  360.           particularly useful in the types of scripting and command-line
  361.           environments where CEnvi is most likely to be used.
  362.  
  363.             #define VERSION_MAJOR // 1 in version "1.0 shareware" release
  364.             #define VERSION_MINOR // 0 in version "1.0 shareware" release
  365.             #define VERSION_STRING // "shareware" for "1.0 shareware"
  366.  
  367.           Depending on which version of CEnvi is running, one of the
  368.           following values will be defined:
  369.  
  370.             #define _DOS_         1
  371.               or
  372.             #define _OS2_         1
  373.               or
  374.             #define _WINDOWS_     1
  375.  
  376.             BLObGet: Get datum from a Binary Large Object (BLOb).
  377.               byte BLObGet(blob BLObVar,int offset,int DataType=UWORD8)
  378.               int BLObGet(blob BLObVar,int offset,int DataType)
  379.               float BLObGet(blob BLObVar,int offset,int DataType)
  380.               byte[] BLObGet(blob BLObVar,int offset,int bufferLen)
  381.             BLObPut: Put datum into a Binary Large Object (BLOb).
  382.               int BLObPut(blob BLObVar[,int offset,]Var v,int DataType)
  383.               int BLObPut(blob BLObVar[,int offset,]byte[] buffer,
  384.                           int bufferLen)
  385.             BLObSize: Determine size of a Binary Large Object (BLOb).
  386.               int BLObSize(blob BLObVar[,int SetSize])
  387.             byte: Return numerical value as represented by a byte.
  388.               byte byte(var v)
  389.             DataDimension: Determine dimension of variable data.
  390.               int DataDimension(var)
  391.             DataType: Determine data type of a variable.
  392.               int DataType(var)
  393.             defined: Test if variable has been defined.
  394.               bool defined(var v)
  395.             Directory: Search directory listing for a file specification.
  396.               struct[] Directory([,string SearchSpec
  397.                    [,bool RecurseSubdirectories
  398.                    [,int IncludeAttrib
  399.                    [,int RequiredAttrib]]]])
  400.             float: Return numerical value as a floating-point number.
  401.               float float(var v)
  402.             FullPath: Convert partial path specification to full path name.
  403.               string FullPath(string PathSpec)
  404.             function: Call a function by name.
  405.               var function(string FunctionName[,...])
  406.             GetArraySpan: Determine size of an array.
  407.               int GetArraySpan(var[] array[,int MinIndex])
  408.             integer: Return numerical value as represented by an integer.
  409.               int integer(var v)
  410.             peek: Read data from memory location.
  411.               byte peek(int address)
  412.               byte peek(int address,int DataType=UWORD8)
  413.               int peek(int address,int DataType)
  414.               float peek(int address,int DataType)
  415.               byte[] peek(int address,int bufferLen)
  416.             pointer: Get address of variable array or variable datum.
  417.               int pointer(var)
  418.             poke: Write data to memory location.
  419.               int poke(int address,byte b)
  420.               int poke(int address,Var v,int DataType)
  421.               int poke(int address,byte[] buffer,int bufferLen)
  422.             ScreenClear: Clear screen.
  423.               void ScreenClear()
  424.             ScreenCursor: Get or set cursor position in the visible screen.
  425.               struct ScreenCursor([int col[,int row]])
  426.             ScreenSize: Get the height and width of the screen.
  427.               struct ScreenSize()
  428.             SetArraySpan: Set size of an array.
  429.               void SetArraySpan(var[] array[,int MinIndex],int MaxIndex)
  430.             spawn: Run an external executable. Mode can be P_WAIT, P_SWAP,
  431.               P_NOWAIT, or P_OVERLAY, depending on the operating system.
  432.               int spawn(int mode,string ExecutionCommandLine)
  433.               int spawn(int mode,string ExecutableSpec[,var arg1
  434.                         [,var arg2[,var arg3[,...]]]])
  435.               int spawn(int mode,string ExecutableSpec
  436.                         [,string[] ArgStrings])
  437.             SplitFileName: Determine file directory, name, and extension.
  438.               structure SplitFileName(string FileSpec)
  439.             Suspend: Suspend program execution for a while.
  440.               void Suspend(int milliSecondDelay)
  441.             undefine: Make a variable undefined.
  442.               void undefine(var v)
  443.  
  444. 4.3.  CEnvi DOS Library (also for Windows)
  445.  
  446.           The routines in this section are specific to the DOS (MS-DOS,
  447.           PC-DOS, DR-DOS) version of CEnvi.  They are included internally
  448.           to the CEnvi program, and so all of these routines are available
  449.           to any Cmm program executed by CEnvi under DOS (or Windows).
  450.  
  451.           Most of these routines allow the programmer to have more power
  452.           than is generally acknowledged as safe under Cmm's guidelines,
  453.           and so you'd better know what you're doing when you use these
  454.           commands, for they provide plenty of rope with which to hang
  455.           yourself.
  456.  
  457.           Windows is built atop DOS, and so the functions in this library
  458.           are also available in the Windows version of CEnvi.
  459.  
  460.             Address: Convert segment:offset pointer into memory address.
  461.               int Address(int segment,int offset)
  462.             asm: Execute imbedded assembled code.
  463.               int asm(byte[] buf[,int ax[,int bx[,int cx[,int dx]]]])
  464.             inport: Read byte from a hardware port.
  465.               byte inport(int portid)
  466.             inportw: Read word from a hardware port.
  467.               int inportw(int portid)
  468.             interrupt: Execute an 8086 interrupt.
  469.               bool interrupt(int Interrupt,RegIn[,RegOut])
  470.             offset: Break far pointer into segment:offset components.
  471.               int offset(byte[] buf)
  472.               int offset(int address)
  473.             outport: Write byte to a hardware port.
  474.               void outport(int portid,byte value)
  475.             outportw: Write word to a hardware port.
  476.               void outport(int portid,int value)
  477.             segment: Break far pointer into segment:offset components.
  478.               int segment(byte[] buf)
  479.               int segment(int address)
  480.  
  481. 4.4.  CEnvi OS/2 2.x Library
  482.  
  483.           The routines in this section are specific to the OS/2 version of
  484.           CEnvi.  They are included internally to the CEnvi program, and so
  485.           all of these routines are available to any Cmm program executed
  486.           by CEnvi under OS/2 2.x.
  487.  
  488.           Most of these routines allow the programmer to have more power
  489.           than is generally acknowledged as safe under Cmm's guidelines,
  490.           and so you'd better know what you're doing when you use these
  491.           commands, for they provide plenty of rope with which to hang
  492.           yourself.
  493.  
  494.             asm: Execute imbedded assembled code.
  495.               int asm(byte[] buf[,int eax[,int ebx[,int ecx[,int edx]]]])
  496.             DynamicLink: Call a function in a Dynamic Link Library (DLL).
  497.               int DynamicLink(string ModuleName,string ProcedureName,
  498.                               int BitSize,int CallingConvention,...)
  499.               int DynamicLink(string ModuleName,int Ordinal,
  500.                               int BitBize,int CallingConvention,...)
  501.               int DynamicLink(int CallGate,
  502.                               int BitSize,int CallingConvention,...)
  503.             ESet: Write new environment variables settings into a file.
  504.               bool ESet(string FileSpec)
  505.             Info(): Return following structure elements for this CEnvi
  506.               instance: Process, Session, WinHandle, SwitchHandle, hab
  507.             PMDynamicLink(): Version of DynamicLink for functions that MUST
  508.               be made from a queued PM process; calls made transparently
  509.               through the CEnvi2PM.exe gateway program
  510.             PMInfo(): Version of Info() for the CEnvi2PM gateway process
  511.             PMpeek(): Version of Peek for memory accessible only to the the
  512.               PM gateway program
  513.             PMpoke(): Version of Poke for memory accessible only to the the
  514.               PM gateway program
  515.             ProcessList: Get list of all running processes.
  516.               struct[] ProcessList([bool IncludeThreadInfo])
  517.             somMethod: Call a SOM (system object model) method.
  518.               int somMethod(int somObject,int MethodOffset,...)
  519.  
  520. 4.5.  CEnvi Windows 3.x Library
  521.  
  522.           The routines in this section are specific to the Windows 3.x
  523.           version of CEnvi.  They are included internally to the CEnvi
  524.           program, and so all of these routines are available to any Cmm
  525.           program executed by CEnvi under Windows.
  526.  
  527.           Most of these routines allow the programmer to have more power
  528.           than is generally acknowledged as safe under Cmm's guidelines,
  529.           and so you'd better know what you're doing when you use these
  530.           commands, for they provide plenty of rope with which to hang
  531.           yourself.
  532.  
  533.           Windows is built atop DOS, and so the functions in the DOS
  534.           library are also available in the Windows version of CEnvi.
  535.  
  536.             BreakWindow: Destroy windows created with MakeWindow()
  537.               bool BreakWindow([int WindowHandle])
  538.             DoWindows: Process windows messages.
  539.               bool DoWindows([bool Peek = False])
  540.             DynamicLink: Call a function in a Dynamic Link Library (DLL).
  541.               int DynamicLink(string LibraryName,string ProcedureName,
  542.                               int ReturnType,int CallingConvention,...)
  543.               int DynamicLink(string LibraryName,int ProcedureOrdinal,
  544.                               int ReturnType,int CallingConvention,...)
  545.             Instance: Get CEnvi instance for this session.
  546.               int Instance()
  547.             MakeWindow: Define and create a window
  548.               int MakeWindow(int Parent,struct Class OR string Class,
  549.                              string WindowFunction,string Text,int Style,
  550.                              int Column,int Row,int Width,int Height,
  551.                              BLOb CreateParm[,var UtilityVar])
  552.             MultiTask: Turn Windows multitasking on or off.
  553.               void MultiTask(bool)
  554.             ScreenHandle: Get Windows' handle for the CEnvi text screen.
  555.               int ScreenHandle()
  556.             ScreenSize: Get or set the height and width of the screen.
  557.               struct ScreenSize()
  558.               struct ScreenSize(int col, int row[,int RowsRemembered])
  559.             WindowList: Retrieve list of window handles.
  560.               int[] WindowList([int WinHandle])
  561.  
  562. -------------------------------- FILE LIST --------------------------------
  563. The CEnvi Unregistered Shareware package includes the files in the
  564. following list.  You are not permitted to upload or otherwise transfer
  565. copies of any registered version of CEnvi that does not include all of the
  566. files in this list.
  567.  
  568. *CENVI.EXE: CEnvi shareware executable for DOS, OS/2, or Windows.
  569. *CENVI2PM.EXE: Gateway program, executed trasnparently by CEnvi, for access
  570.   to PM-dependent system calls (OS/2 version only).
  571. *CENVI.DOC: CEnvi Shareware Manual, Chapter 1: CEnvi Unregistered Shareware
  572. *CMMTUTOR.DOC: CEnvi Shareware Manual, Chapter 2: Cmm Language Tutorial
  573. *CMM_VS_C.DOC: CEnvi Shareware Manual, Chapter 3: Cmm versus C, for C
  574.   Programmers
  575. *CENVILIB.DOC: CEnvi Shareware Manual, Chapter 4: Function Library
  576. *LICENSE.DOC: CEnvi Unregistered Shareware License Agreement
  577. *README.DOC: Introductory file. Read this first for quick intallation.
  578. *REGISTER.DOC: CEnvi registration form
  579. *INSTALL.CMM: Cmm source file for installing this shareware version
  580. * *.CMM, *.CMD, *.BAT, *.LIB: Many many sample programs using CEnvi.  See
  581.   CENVI.DOC for a complete list.
  582.  
  583. ----------------------------- REGISTRATION -------------------------------
  584. This is a shareware release.  Please register.  As a registered CEnvi user
  585. you will receive:
  586. *The latest version of CEnvi for all supported platforms (currently DOS,
  587.   OS/2, and Windows).
  588. *The CEnvi user's manual (almost 100 pages, including a description of the
  589.   Cmm programming language, a tutorial for those who have never programmed,
  590.   and descriptions and examples of the over 150 functions included in the
  591.   CEnvi library).
  592. *Free incremental electronic downloads for new versions of CEnvi for all
  593.   supported operating systems.
  594. *Unlimited support from Nombas and CEnvi/Cmm users through CompuServe
  595.   (72212,1622), internet (bsn@world.std.com), the cenvi-cmm e-mail mailing
  596.   list (cenvi-cmm@world.std.com), and the Nombas BBS
  597.   (ATDT16173916595,,,,,44444).
  598. *Access to the growing list of CEnvi utilities and libraries (some of which
  599.   are included in this unregistered shareware package, and others are
  600.   contributed by Nombas and CEnvi/Cmm users to the electronic locations
  601.   described above).
  602.  
  603. There are three ways to register CEnvi version 1.008: 
  604.  
  605. ***************************************************************************
  606. ********* REGISTRATION METHOD 1: CENVI MAIL-IN REGISTRATION FORM **********
  607. ***************************************************************************
  608. Please fill out and mail in this form, along with payment.
  609.  
  610. Where did you get CEnvi? ______________________________________________
  611.  
  612. Name: _________________________________________________________________
  613.  
  614. Company: ______________________________ Position: _____________________
  615.  
  616. Address: ______________________________________________________________
  617.  
  618. _______________________________________________________________________
  619.  
  620. ______________________________________________________________________
  621.  
  622. Country: _________________________   (add ZIP code if applicable)
  623.  
  624. Phone: ___________________________  EMail: ______________________________
  625.  
  626.           Diskette size: [  ] 3.5"   [  ] 5.25"
  627.  
  628. CEnvi Registered License & Manual.... Quantity _____ x $38.00 = $ _________
  629. License fee for additional CEnvi users at
  630. your organization (does not include additional
  631. manual or diskettes)...Simultaneous-User Count _____ x $15.00 = $ _________
  632. Additional CEnvi Manuals..............Quantity _____ x $10.00 = $ _________
  633. Shipping outside USA, Canada, or Mexico  $4.00 ................ $ _________
  634.                                                        Subtotal $ _________
  635. Massachusetts residents please add 5% sales tax ............... $ _________
  636.  
  637.                                                           Total $ _________
  638.  
  639. Include a check or money order for this total, IN U.S. FUNDS AND DRAWN ON A
  640. U.S. BANK, payable to Nombas, or supply the following credit card payment
  641. information.  Credit cards orders will be processed through a distributor:
  642. Custom Computer Systems of Medford, MA.
  643.  
  644. Credit card orders (circle one): MasterCard / Visa / American Express
  645.  
  646.                                  Discover / Carte Blanche / Diners Club
  647.  
  648.     Card Number _____________________________________  Expires ____________
  649.  
  650.     Exact name on card (print) ____________________________________________
  651.  
  652.     Signature (REQUIRED) __________________________________________________
  653. Mail this form, along with payment or credit information, to:
  654.                Nombas
  655.                P.O. Box 875
  656.                Medford, MA  02155   USA
  657.  
  658.  
  659. ***************************************************************************
  660. ******** REGISTRATION METHOD 2: COMPUSERVE ELECTRONIC REGISTRATION ********
  661. ***************************************************************************
  662. CompuServe members may register directly through the CompuServe
  663. Registration Service.  To use this service enter GO SWREG at your CI$
  664. prompt.  Registration ID is 1354 for CEnvi for DOS, 1355 for CEnvi for
  665. OS/2, and 1356 for CEnvi for Windows (you only need to register ONE
  666. version).  Nombas will immediately be informed of your registration, and
  667. the CEnvi registration fee will automatically be added to your CompuServe
  668. bill.
  669.  
  670.  
  671. ***************************************************************************
  672. ************ REGISTRATION METHOD 3: Public (software) Library *************
  673. ***************************************************************************
  674. CREDIT CARD ORDERS ONLY -
  675.  
  676. You can order with MC, Visa, Amex, or Discover from Public (software)
  677. Library by calling 800-2424-PsL or 713-524-6394 or by FAX to 713-524-6398
  678. or by CIS Email to 71355,470. You can also mail credit card orders to PsL
  679. at P.O.Box 35705, Houston, TX 77235-5705.
  680.  
  681. THE ABOVE NUMBERS ARE FOR ORDERS ONLY.
  682.  
  683. Any questions about the status of the shipment of the order, refunds,
  684. registration options, product details, technical support, volume discounts,
  685. dealer pricing, site licenses, etc, must be directed to Nombas (see phone
  686. number and addresses below).
  687.  
  688. To insure that you get the latest version, PsL will notify Nombas the day
  689. of your order and we will ship the product directly to you.
  690.  
  691. CEnvi (all versions) is PsL product #11069.  Prices (including shipping and
  692. handling) are: $42 US/Canada and $45 overseas.
  693.  
  694.  
  695. ***************************************************************************
  696. Thank you for trying this shareware copy of CEnvi.  Mail inquires and other
  697. correspondences to:
  698.      Nombas
  699.      P.O. Box 875
  700.      Medford, MA  02155   USA
  701.  
  702. Nombas may also be contacted at:
  703.      Phone: (617)391-6595
  704.      Internet: bsn@world.std.com
  705.      CompuServe: 72212,1622
  706.      BBS: (617)391-6595 ext. 44 (e.g., ATDT16173916595,,,,,44444)
  707.